package com.qf.cosmetology.controller;

import com.qf.cosmetology.entity.Pic;
import com.qf.cosmetology.result.ResponseData;
import com.qf.cosmetology.service.PicService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Delete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletMapping;
import javax.servlet.http.HttpServletRequest;

/**
 * (Pic)表控制层
 *
 * @author makejava
 * @since 2021-06-22 22:52:29
 * 原生请求方式
 * http://localhost:8080/pic/selectOne?id=1   key-value键值对:用作传值
 *
 * restful风格接口设计  -- 他是一个接口设计规范 --->一般满足get请求
 * http://localhost:8080/pics/1
 * http://localhost:8080/pics/1/xiyang
 * 当参数超过三个时，都将数据放在请求体中
 * 当数据放在请求体中的时候，可以采用POST DELETE PUT PATCH
 * http://localhost:8080/pics  {id:1,name:"xiyang"}  前端使用AJAX的是有申明请求方式 eg：type:POST
 * http://localhost:8080/pics  {id:1,name:"xiyang"}  前端使用AJAX的是有申明请求方式 eg：type:PUT
 *
 *  GET请求使用于查询操作
 *  POST请求使用于增加操作
 *  DELETE请求使用于删除操作
 *  PUT请求使用于修改操作
 *  PATCH请求使用于修改操作
 *  ----->  为什么有两个修改操作？
 *  update user set name="xiyang" sex="1" where id=1   修改所有字段时使用PUT
 *  update user set name="xiyang" where id=1   具体修改某一个或者两个参数时使用PATCH
 *
 *  //如何接收请求中的参数？
 *  http://localhost:8080/pics/1
 *  地址后有参数
 */
@RestController
@RequestMapping("pics")
public class PicController {
    /**
     * 服务对象
     */
    @Autowired
    private PicService picService;
    //还未实例化

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
//
    @GetMapping("selectOne")
    public Pic selectOne(Integer id) {
        //在方法的参数中自动映射请求的参数（参数的名称要等于请求参数得到Key）
        //拦截请求
        //接收请求参数
        //调用服务层服务 -----需要使用服务层对象里面的方法
        //获取服务层对象
        //通过服务层对象调用对应的函数

        Pic pic = picService.queryById(id);
        //接收服务层返回的数据并且将数据返回给前端
        return pic;

    }

    /**
     * http://localhost:8080/pics?id=1
     * http://localhost:8080/pics/1 key-value
     *
     * @param id
     * @return
     */
//    @PathVariable 只有数据在路径后时使用
//    @ApiImplicitParams({
//            @ApiImplicitParam(name="id",value = "图片id",dataType = "int"),
//            @ApiImplicitParam(name="title",value = "图片名称"),
//    })

    @ApiOperation(value="queryByType",notes = "根据图片类型获取对应的轮播图片或者是导航图片")
    @ApiImplicitParam(name="type",value = "图片的类型")
    @GetMapping("/{type}")
//    @RequestMapping(value = "{/id}",method = RequestMethod.GET)
    public ResponseData queryByType(@PathVariable String type) {

        return picService.queryByType(type);
    }
    //    http://localhost:8080/pics/   restful风格     在后台根据注解去判断前段传过的请求是什么请求

    /**
     * 使用restful风格，数据的交互方式为json数据格式
     *
     * @param pic
     * @return
     */




}